Modern computers employ human-computer interfaces (HCI) which enable users, including system administrators, programmers, and end users, to interact with one or more computer systems via an easy-to-use, visually-oriented display, typically on the screen of a computer monitor. The screen may have information divided into, and distributed among, one or more conceptual frames, called windows, through which the user manages, for example, data, files, system programs, and application programs.
Window-oriented operating systems (OS) are ubiquitous to the extent that nearly all contemporary computer systems implement one or more such systems. Such operating systems can include, without limitation, the open system architecture X-Windows which is supported worldwide by several hundred vendors and original equipment manufacturers (OEM); Mac-OS® by Apple Computer, Inc., Cupertino, Calif.; and the WINDOWS® family of operating systems from Microsoft Corp., Redmond, Wash.
In general, each of the one or more overlapping, often rectangular, windows acts like a separate terminal, and the user is able to perform different tasks in each window. The computer operating system employs one form of HCI, namely, a graphical user interface (GUI) to permit the user to take advantage of the computer's graphics capabilities to make a program easy to use. Indeed, a well-designed GUI manages windows in a manner that frees the user from learning complex command languages, and allows the user to interact with the data, files, system, and programs in an intuitive manner.
Windows have geometry as well as delimited regions, icons and different visual attributes associated with them. Display attributes typically are manipulated. The OS API at the lowest level often provides the interface with the pixels on the screen. At a higher level, a user interface API can build borders, insert title bars and stands, etc.
For certain applications, it is desirable to maintain a specific graphics display window on a screen that will not be obscured by any other window. This is typically accomplished through the Application Program Interface to the window. An “always on top” (AOT) attribute maintains a specific graphics display window on the screen, unobscured by any other window. Initially, a particular application program can seize and retain this attribute so long as no other application program requests it. A subsequently executed application program can take control of this attribute, and itself use the AOT feature. Clearly, this attribute is not in a persistent state, because it belongs to an application program so long as no other application program seizes control of it.
Some application programs try to implement a persistent, AOT attribute, by implementing a re-entrant loop, which is constantly setting the AOT attribute. If another application program attempts to seize the AOT attribute, the first program re-enters the loop and regains ownership of the attribute.
Another example of attempting to create a persistent display attribute, including an “Always, Always on Top” (AAOT) attribute which may be found in the case of a video overlay on a television card for a computer. In this example, the image bits are written directly into the display buffer. The operating system is generally unaware of what graphics display data is written to that section of the buffer, only knowing that the corresponding memory segment is reserved. Thus, the OS is undesirably prevented from having control over the data bits in the image display buffer. Another method of implementing an AOT attribute is to reserve portions of the screen buffer, to the detriment of the operating system. The OS is unable to take advantage of these reserved portions of the screen buffer because they are hidden from the OS.
Current attributes typically are assigned according to a most-recently-requested basis, or a first-come-first-serve basis. However, it is desirable to assign an attribute such that it always preempts other attributes.